﻿/* mvcForum
 * Copyright (C) 2010-2011 Steen F. Tøttrup
 * http://mvcforum.org/
 */

using System;
using System.Collections.Generic;

using mvcForum.Core.Abstractions.Interfaces;

namespace mvcForum.Core.Configuration {

	public class MVCForumWebConfig : IConfiguration {

		public void Save() {
			// TODO:
			throw new NotImplementedException();
		}

		/// <summary>
		/// The number of topics to show per page.
		/// </summary>
		public Int32 TopicsPerPage {
			get {
				return MVCForumSettings.Settings.TopicsPerPage;
			}
			set {
				throw new NotImplementedException();
			}
		}

		/// <summary>
		/// The number of posts to show per page.
		/// </summary>
		public Int32 MessagesPerPage {
			get {
				return MVCForumSettings.Settings.MessagesPerPage;
			}
			set {
				throw new NotImplementedException();
			}
		}

		/// <summary>
		/// The default culture used when creating new users.
		/// </summary>
		public String DefaultCulture {
			get {
				return MVCForumSettings.Settings.DefaultCulture;
			}
			set {
				throw new NotImplementedException();
			}
		}

		/// <summary>
		/// The default timezone used when creating new users.
		/// </summary>
		public String DefaultTimezone {
			get {
				return MVCForumSettings.Settings.DefaultTimezone;
			}
			set {
				throw new NotImplementedException();
			}
		}

		public String SiteURL {
			get {
				return MVCForumSettings.Settings.SiteURL;
			}
			set {
				throw new NotImplementedException();
			}
		}

		public String RobotEmailAddress {
			get {
				return MVCForumSettings.Settings.RobotEmailAddress;
			}
			set {
				throw new NotImplementedException();
			}
		}

		public String RobotName {
			get {
				return MVCForumSettings.Settings.RobotName;
			}
			set {
				throw new NotImplementedException();
			}
		}

		public Boolean AsynchronousAntiSpam {
			get {
				return MVCForumSettings.Settings.AsynchronousAntiSpam;
			}
			set {
				throw new NotImplementedException();
			}
		}

		public Boolean ShowDeletedMessages {
			get {
				return MVCForumSettings.Settings.ShowDeletedMessages;
			}
			set {
				throw new NotImplementedException();
			}
		}

		public Int32 MaxAttachmentsSize {
			get {
				return MVCForumSettings.Settings.MaxAttachmentsSize;
			}
			set { throw new NotImplementedException(); }
		}

		public Int32 MaxFileSize {
			get {
				return MVCForumSettings.Settings.MaxFileSize;
			}
			set { throw new NotImplementedException(); }
		}

		public IList<Int32> NewUserGroups {
			get {
				return new List<Int32>();
			}
			set {
			}
		}

		public IList<String> AllowedExtensions {
			get {
				return new List<String>(MVCForumSettings.Settings.AllowedExtensions.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries));
			}
			set { throw new NotImplementedException(); }
		}

		public Boolean ShowOldPostsOnReply {
			get {
				return MVCForumSettings.Settings.ShowOldPostsOnReply;
			}
			set { throw new NotImplementedException(); }
		}

		public Int32 PostsOnReply {
			get {
				return MVCForumSettings.Settings.PostsOnReply;
			}
			set { throw new NotImplementedException(); }
		}

		public Int32 SpamAverage {
			get {
				// TODO:
				return 100;
			}
			set { throw new NotImplementedException(); }
		}

		public Boolean AllowUserDefinedTheme {
			get {
				return MVCForumSettings.Settings.AllowUserDefinedTheme;
			}
			set { throw new NotImplementedException(); }
		}

		public String Theme {
			get {
				return MVCForumSettings.Settings.Theme;
			}
			set { throw new NotImplementedException(); }
		}

		//public String SubscriptionBody {
		//    get {
		//        return MVCForumSettings.Settings.Notifications.Subscription.Body.Value;
		//    }
		//    set { throw new NotImplementedException(); }
		//}

		public String SubscriptionSubject {
			get {
				return "";
			}
			set { throw new NotImplementedException(); }
		}

		public String RedirectUrlLoggedOut {
			get {
				return String.Empty;
			}
			set {
				throw new NotImplementedException();
			}
		}

		public String RedirectUrlLoggedIn {
			get {
				return String.Empty;
			}
			set {
				throw new NotImplementedException();
			}
		}

		public String RedirectUrlRegistrered {
			get {
				return String.Empty;
			}
			set {
				throw new NotImplementedException();
			}
		}

		public String Editor {
			get {
				return "";
			}
			set { throw new NotImplementedException(); }
		}

		public Boolean CheckForNews {
			get {
				//TODO:
				return true;
			}
			set { throw new NotImplementedException(); }
		}

		public Boolean Editable { get { return false; } }

		public Boolean ShowOnlineUsers { get { return false; } set { throw new NotImplementedException(); } }

		public Boolean UseForumAccountController { get { return false; } set { throw new NotImplementedException(); } }
		public Boolean AllowSignUp { get { return false; } set { throw new NotImplementedException(); } }
		public Boolean AllowLocalUsers { get { return false; } set { throw new NotImplementedException(); } }
		public Boolean AllowOpenAuthUsers { get { return false; } set { throw new NotImplementedException(); } }
		public Boolean RequireEmailValidation { get { return false; } set { throw new NotImplementedException(); } }
		public String ValidationSubject { get { return String.Empty; } set { throw new NotImplementedException(); } }
		public String ValidationBody { get { return String.Empty; } set { throw new NotImplementedException(); } }
		public String ForgottenPasswordSubject { get { return String.Empty; } set { throw new NotImplementedException(); } }
		public String ForgottenPasswordBody { get { return String.Empty; } set { throw new NotImplementedException(); } }

		public Boolean RequireRulesAccept { get { return false; } set { throw new NotImplementedException(); } }
		public String SignUpRules { get { return String.Empty; } set { throw new NotImplementedException(); } }
		public Boolean InformOnQuarantine { get { return false; } set { throw new NotImplementedException(); } }
		public Boolean AllowQuickReply { get { return false; } set { throw new NotImplementedException(); } }

		public AdminAuthorNameSetting AuthorNameSetting { get { return AdminAuthorNameSetting.Username; } set { throw new NotImplementedException(); } }
	}
}